package com.atguigu.sql.data.jdbc

import java.util.Properties

import com.atguigu.cm.constan.MysqlCons
import com.atguigu.sql.util.MySparkSessionUtil
import org.apache.spark.rdd.RDD
import org.apache.spark.sql.{DataFrame, SaveMode, SparkSession}

/**
 * description ：jdbc写入
 * author      ：剧情再美终是戏 
 * mail        : 13286520398@163.com
 * date        ：Created in 2020/1/12 20:17
 * modified By ：
 * version:    : 1.0
 */
object WJdbc {

  def main(args: Array[String]): Unit = {

    // 获取 sparkSession
    val spark: SparkSession = MySparkSessionUtil.get(args)

    // 创建rdd
    val rdd: RDD[(Int, String)] = spark.sparkContext.parallelize((80, "80") :: (81, "81") :: Nil, 1)

    // 根据rdd创建df
    import spark.implicits._
    val df: DataFrame = rdd.toDF("id", "name")

    // TODO 1、通用方式写入
    //    df.write
    //      .format("jdbc")
    //      .option("url", MysqlCons.url + "/rdd")
    //      .option("user", MysqlCons.user)
    //      .option("password", MysqlCons.passWord)
    //      .option("dbtable", "user")
    //      .mode(SaveMode.Append)
    //      .save()

    // 通过特定的方式写入
    val properties = new Properties()
    properties.setProperty("user", MysqlCons.user)
    properties.setProperty("password", MysqlCons.passWord)
    df.write.mode(SaveMode.Append).jdbc(
      MysqlCons.url + "/rdd",
      "user",
      properties
    )

    // 关闭 SparkSession 资源
    MySparkSessionUtil.close(spark)
  }

}
